<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>

        /*
      数据类型转换 - 转数值
        + 把其他数据类型转换成数值类型

      1. Number()
        + 语法: Number(你要转换的数据)
        + 返回值(结果): 转换好的数值类型数据
        + 转换规则:
          => 把你要转换的内容当做一个整体
          => 如果可以转换成一个合法数字, 那么就是这个数字
          => 如果不能转换成一个合法数字, 那么就是 NaN
        + 布尔 true 会转换成 1
        + 布尔 false 会转换成 0

      2. parseInt
        + 语法: parseInt(你要转换的数据)
        + 返回值(结果): 转换好的数值类型数据
        + 转换规则:
          => 不管你要转换的是什么, 都一位一位的看待
          => 如果第一位就不能转换成合法数字, 那么直接给出结果 NaN, 停止转换
          => 如果第一位可以, 那么保留, 继续看第二位
          => 以此类推, 直到不能转换或者结束为止
        + 注意: 不认识小数点

      3. parseFloat()
        + 语法: parseFloat(你要转换的数据)
        + 返回值(结果): 转换好的数值类型数据
        + 转换规则:
          => 和 parseInt 一模一样
          => 只不过多认识了一个 小数点

      4. 非加法的数学运算
        + 转换规则: 和 Number 方法一模一样, 强制转换
    */
        // var age = prompt('请输入你的年龄','比如18岁'); // string
        // document.write('再过五年的年龄是:'+(age+5)) 


        // 数据类型的转换 
        // Number.MAX_VALUE
        // Number(你要转换的数据); 把要转换的数据当成一个整体
        // var test = '100abc';
        // console.log(test);
        // var res = Number(test);
        // console.log(typeof res); // number
        // console.log(res); //NaN

        //parseInt(你要转换的数据);
        // parseInt把要转化的数据切成一位一位的 
        // 从左往右开始转 如果能转 就输出 遇到不能转的就停止
        // var test = '100abc';
        // var res = parseInt(test);
        // console.log(typeof res); //number
        // console.log(res); // 100 
        // var num = '100.123';
        // var res = parseInt(num);
        // console.log(res); // 遇到小数点就停止  结果就是100 



        //parseFloat(你要转换的数据)
        // parseFloat把要转化的数据切成一位一位的 
        // 从左往右开始转 如果能转 就输出 遇到不能转的就停止
        // var test = '100abc';
        // var res = parseFloat(test);
        // console.log(typeof res); //number
        // console.log(res); // 100 

        // var num = '100.123';
        // var res = parseFloat(num);
        // console.log(res);


        // var test = true;
        // var res1 = Number(test);
        // console.log(res1); // true 1 flase 0 

        // var res2 = parseInt(test);
        // console.log(res2); // 因为把转化的数据切成一位一位的
        // // NaN
        // var res3 = parseFloat(test);
        // console.log(res3); //NaN

        // Number() 
        // 把要转化的数据当做一个整体 如果有一位不能转成数字 
        // 整体直接输出NaN 
        // true 转成 1 false 转成 0 

        // parseInt() 
        /* 把要转换的数据切成一位一位的 从左往右 如果能转
        就输出 不能转停止转化 如果全部不能转 输出NaN 如果第一位就不能转
        直接输出NaN */

         // parseFloat() 
        /* 把要转换的数据切成一位一位的 从左往右 如果能转
        就输出 不能转停止转化 如果全部不能转 输出NaN 如果第一位就不能转
        直接输出NaN */


        //- 背后自动给你转化了 

        // var test = 'a10000bc1000';
        // var res = parseInt(test);
        // console.log(typeof res); //number
        // console.log(res);

        // alert('666abc'-100); // 566  
        // 遇到非加法 左右有一个数值 另外一个会自动转化类型
        // 转不了 就输出 
        // 默认转成数值 整体转  也就是 背后默默使用Number();


        var num1 = parseFloat(prompt('请输入第一个数字:'));
        var num2 =  parseFloat(prompt('请输入第二个数字:'));
        alert(num1-num2);
        // 加入num1这个变量在其它地方也被用到了 别的地方希望num1是个字符串 
        // 使用下面的方式 
        var num1 = prompt('请输入第一个数字:');
        var num2 = prompt('请输入第二个数字:');
        alert(parseFloat(num1)-parseFloat(num2));

    </script>
</body>
</html>